#pragma once
#include "stdafx.h"
#include "DeviceClass.h"
#include "RenderObjectManager.h"
#include "RenderObject.h"
#include "Mesh.h"
#include "Model.h"

////////////////////////////////////////////////////////////////////////////////
// Class name: GraphicsClass
////////////////////////////////////////////////////////////////////////////////
class DeviceClass;
class RenderObjectManager;
class RenderObject;
class Mesh;
class Model;
class Component;

/*
	This class control all the things related with graphics
*/
class GraphicsClass : public Component
{
private:
	GraphicsClass();
	GraphicsClass(const GraphicsClass&);
	
public:
	typedef boost::shared_ptr<GraphicsClass> sPtr;
	GraphicsClass(bool,bool);
	~GraphicsClass();
	void AddedToObject();
	void Initialize(Message const & msg);
	bool Frame();

private:
	bool Render();
	void RenderInit();
	DeviceClass::sPtr m_Device;
	RenderObjectManager::sPtr m_renderObjectManager;
	int m_screenWidth;
	int m_screenHeight;
	bool m_fullScreen;
	bool m_vsyncEnable;

};